﻿using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using PortaCapena.OdooJsonRpcClient.Attributes;
using PortaCapena.OdooJsonRpcClient.Converters;
using PortaCapena.OdooJsonRpcClient.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.Serialization;
using System.Text;
using static OdooRpcClient.OdooEnum;

namespace OdooRpcClient.Model.Hr
{
    [OdooTableName("hr.leave")]
    [JsonConverter(typeof(OdooModelConverter))]
    public class HrLeaveOdooModel : IOdooModel
    {

        /// <summary>
        /// Name
        /// Char
        /// <summary>
        [JsonProperty("name")]
        [Description("Name")]
        public string Name { get; set; }

        /// <summary>
        /// PrivateName
        /// Char
        /// <summary>
        [JsonProperty("private_name")]
        [Description("PrivateName")]
        public string PrivateName { get; set; }

        /// <summary>
        /// State
        /// Selection
        /// The status is set to 'To Submit', when a time off request is created.
        /// The status is 'To Approve', when time off request is confirmed by user.
        /// The status is 'Refused', when time off request is refused by manager.
        /// The status is 'Approved', when time off request is approved by manager.
           /// <summary>
       [JsonProperty("state")]
        [Description("State")]
       public StatusHrLeaveOdooEnum? State { get; set; }

        /// <summary>
        /// PayslipStatus
        /// Boolean
        /// Green this button when the time off has been taken into account in the payslip.
        /// <summary>
        [JsonProperty("payslip_status")]
        [Description("PayslipStatus")]
        public bool? PayslipStatus { get; set; }

        /// <summary>
        /// ReportNote
        /// Text
        /// <summary>
        [JsonProperty("report_note")]
        [Description("ReportNote")]
        public string ReportNote { get; set; }

        /// <summary>
        /// UserId
        /// Many2one
        /// Related user name for the resource to manage its access.
        /// res.users
        /// <summary>
        [JsonProperty("user_id")]
        [Description("UserId")]
        public long? UserId { get; set; }

        /// <summary>
        /// ManagerId
        /// Many2one
        /// hr.employee
        /// <summary>
        [JsonProperty("manager_id")]
        [Description("ManagerId")]
        public long? ManagerId { get; set; }

        /// <summary>
        /// HolidayStatusId
        /// Many2one
        /// required
        /// hr.leave.type
        /// <summary>
        [JsonProperty("holiday_status_id")]
        [Description("HolidayStatusId")]
        public long HolidayStatusId { get; set; }

        /// <summary>
        /// ValidationType
        /// Selection
        /// <summary>
        [JsonProperty("validation_type")]
        [Description("ValidationType")]
        public ValidationTypeHrLeaveOdooEnum? ValidationType { get; set; }

        /// <summary>
        /// EmployeeId
        /// Many2one
        /// hr.employee
        /// <summary>
        [JsonProperty("employee_id")]
        [Description("EmployeeId")]
        public long? EmployeeId { get; set; }

        /// <summary>
        /// TzMismatch
        /// Boolean
        /// <summary>
        [JsonProperty("tz_mismatch")]
        [Description("TzMismatch")]
        public bool? TzMismatch { get; set; }

        /// <summary>
        /// Tz
        /// Selection
        /// <summary>
        [JsonProperty("tz")]
        [Description("Tz")]
        public TimezoneOdooEnum? Tz { get; set; }

        /// <summary>
        /// DepartmentId
        /// Many2one
        /// hr.department
        /// <summary>
        [JsonProperty("department_id")]
        [Description("DepartmentId")]
        public long? DepartmentId { get; set; }

        /// <summary>
        /// Notes
        /// Text
        /// <summary>
        [JsonProperty("notes")]
        [Description("Notes")]
        public string Notes { get; set; }

        /// <summary>
        /// DateFrom
        /// Datetime
        /// required
        /// <summary>
        [JsonProperty("date_from")]
        [Description("DateFrom")]
        public DateTime DateFrom { get; set; }

        /// <summary>
        /// DateTo
        /// Datetime
        /// required
        /// <summary>
        [JsonProperty("date_to")]
        [Description("DateTo")]
        public DateTime DateTo { get; set; }

        /// <summary>
        /// NumberOfDays
        /// Float
        /// Number of days of the time off request. Used in the calculation. To manually correct the duration, use this field.
        /// <summary>
        [JsonProperty("number_of_days")]
        [Description("NumberOfDays")]
        public double? NumberOfDays { get; set; }

        /// <summary>
        /// NumberOfDaysDisplay
        /// Float
        /// Number of days of the time off request according to your working schedule. Used for interface.
        /// <summary>
        [JsonProperty("number_of_days_display")]
        [Description("NumberOfDaysDisplay")]
        public double? NumberOfDaysDisplay { get; set; }

        /// <summary>
        /// NumberOfHoursDisplay
        /// Float
        /// Number of hours of the time off request according to your working schedule. Used for interface.
        /// <summary>
        [JsonProperty("number_of_hours_display")]
        [Description("NumberOfHoursDisplay")]
        public double? NumberOfHoursDisplay { get; set; }

        /// <summary>
        /// NumberOfHoursText
        /// Char
        /// <summary>
        [JsonProperty("number_of_hours_text")]
        [Description("NumberOfHoursText")]
        public string NumberOfHoursText { get; set; }

        /// <summary>
        /// DurationDisplay
        /// Char
        /// Field allowing to see the leave request duration in days or hours depending on the leave_type_request_unit
        /// <summary>
        [JsonProperty("duration_display")]
        [Description("DurationDisplay")]
        public string DurationDisplay { get; set; }

        /// <summary>
        /// MeetingId
        /// Many2one
        /// calendar.event
        /// <summary>
        [JsonProperty("meeting_id")]
        [Description("MeetingId")]
        public long? MeetingId { get; set; }

        /// <summary>
        /// ParentId
        /// Many2one
        /// hr.leave
        /// <summary>
        [JsonProperty("parent_id")]
        [Description("ParentId")]
        public long? ParentId { get; set; }

        /// <summary>
        /// LinkedRequestIds
        /// One2many
        /// hr.leave
        /// parent_id
        /// <summary>
        [JsonProperty("linked_request_ids")]
        [Description("LinkedRequestIds")]
        public long[] LinkedRequestIds { get; set; }

        /// <summary>
        /// HolidayType
        /// Selection
        /// By Employee: Allocation/Request for individual Employee, By Employee Tag: Allocation/Request for group of employees in category
        /// required
        /// <summary>
        [JsonProperty("holiday_type")]
        [Description("HolidayType")]
        public AllocationModeHrLeaveOdooEnum HolidayType { get; set; }

        /// <summary>
        /// CategoryId
        /// Many2one
        /// Category of Employee
        /// hr.employee.category
        /// <summary>
        [JsonProperty("category_id")]
        [Description("CategoryId")]
        public long? CategoryId { get; set; }

        /// <summary>
        /// ModeCompanyId
        /// Many2one
        /// res.company
        /// <summary>
        [JsonProperty("mode_company_id")]
        [Description("ModeCompanyId")]
        public long? ModeCompanyId { get; set; }

        /// <summary>
        /// FirstApproverId
        /// Many2one
        /// This area is automatically filled by the user who validate the time off
        /// hr.employee
        /// <summary>
        [JsonProperty("first_approver_id")]
        [Description("FirstApproverId")]
        public long? FirstApproverId { get; set; }

        /// <summary>
        /// SecondApproverId
        /// Many2one
        /// This area is automatically filled by the user who validate the time off with second level (If time off type need second validation)
        /// hr.employee
        /// <summary>
        [JsonProperty("second_approver_id")]
        [Description("SecondApproverId")]
        public long? SecondApproverId { get; set; }

        /// <summary>
        /// CanReset
        /// Boolean
        /// <summary>
        [JsonProperty("can_reset")]
        [Description("CanReset")]
        public bool? CanReset { get; set; }

        /// <summary>
        /// CanApprove
        /// Boolean
        /// <summary>
        [JsonProperty("can_approve")]
        [Description("CanApprove")]
        public bool? CanApprove { get; set; }

        /// <summary>
        /// LeaveTypeRequestUnit
        /// Selection
        /// <summary>
        [JsonProperty("leave_type_request_unit")]
        [Description("LeaveTypeRequestUnit")]
        public TakeTimeOffInHrLeaveOdooEnum? LeaveTypeRequestUnit { get; set; }

        /// <summary>
        /// RequestDateFrom
        /// Date
        /// <summary>
        [JsonProperty("request_date_from")]
        [Description("RequestDateFrom")]
        public DateTime? RequestDateFrom { get; set; }

        /// <summary>
        /// RequestDateTo
        /// Date
        /// <summary>
        [JsonProperty("request_date_to")]
        [Description("RequestDateTo")]
        public DateTime? RequestDateTo { get; set; }

        /// <summary>
        /// RequestHourFrom
        /// Selection
        /// <summary>
        [JsonProperty("request_hour_from")]
        [Description("RequestHourFrom")]
        public HourFromHrLeaveOdooEnum? RequestHourFrom { get; set; }

        /// <summary>
        /// RequestHourTo
        /// Selection
        /// <summary>
        [JsonProperty("request_hour_to")]
        [Description("RequestHourTo")]
        public HourToHrLeaveOdooEnum? RequestHourTo { get; set; }

        /// <summary>
        /// RequestDateFromPeriod
        /// Selection
        /// <summary>
        [JsonProperty("request_date_from_period")]
        [Description("RequestDateFromPeriod")]
        public DatePeriodStartHrLeaveOdooEnum? RequestDateFromPeriod { get; set; }

        /// <summary>
        /// RequestUnitHalf
        /// Boolean
        /// <summary>
        [JsonProperty("request_unit_half")]
        [Description("RequestUnitHalf")]
        public bool? RequestUnitHalf { get; set; }

        /// <summary>
        /// RequestUnitHours
        /// Boolean
        /// <summary>
        [JsonProperty("request_unit_hours")]
        [Description("RequestUnitHours")]
        public bool? RequestUnitHours { get; set; }

        /// <summary>
        /// RequestUnitCustom
        /// Boolean
        /// <summary>
        [JsonProperty("request_unit_custom")]
        [Description("RequestUnitCustom")]
        public bool? RequestUnitCustom { get; set; }

        /// <summary>
        /// TimesheetIds
        /// One2many
        /// account.analytic.line
        /// holiday_id
        /// <summary>
        [JsonProperty("timesheet_ids")]
        [Description("TimesheetIds")]
        public long[] TimesheetIds { get; set; }

        /// <summary>
        /// ActivityIds
        /// One2many
        /// mail.activity
        /// res_id
        /// <summary>
        [JsonProperty("activity_ids")]
        [Description("ActivityIds")]
        public long[] ActivityIds { get; set; }

        /// <summary>
        /// ActivityState
        /// Selection
        /// Status based on activities
        ///     Overdue: Due date is already passed
        ///     Today: Activity date is today
        ///     Planned: Future activities.
       /// <summary>
       [JsonProperty("activity_state")]
       [Description("ActivityState")]
       public ActivityStateHrLeaveOdooEnum? ActivityState { get; set; }

        /// <summary>
        /// ActivityUserId
        /// Many2one
        /// res.users
        /// <summary>
        [JsonProperty("activity_user_id")]
        [Description("ActivityUserId")]
        public long? ActivityUserId { get; set; }

        /// <summary>
        /// ActivityTypeId
        /// Many2one
        /// mail.activity.type
        /// <summary>
        [JsonProperty("activity_type_id")]
        [Description("ActivityTypeId")]
        public long? ActivityTypeId { get; set; }

        /// <summary>
        /// ActivityTypeIcon
        /// Char
        /// Font awesome icon e.g. fa-tasks
        /// <summary>
        [JsonProperty("activity_type_icon")]
        [Description("ActivityTypeIcon")]
        public string ActivityTypeIcon { get; set; }

        /// <summary>
        /// ActivityDateDeadline
        /// Date
        /// <summary>
        [JsonProperty("activity_date_deadline")]
        [Description("ActivityDateDeadline")]
        public DateTime? ActivityDateDeadline { get; set; }

        /// <summary>
        /// MyActivityDateDeadline
        /// Date
        /// <summary>
        [JsonProperty("my_activity_date_deadline")]
        [Description("MyActivityDateDeadline")]
        public DateTime? MyActivityDateDeadline { get; set; }

        /// <summary>
        /// ActivitySummary
        /// Char
        /// <summary>
        [JsonProperty("activity_summary")]
        [Description("ActivitySummary")]
        public string ActivitySummary { get; set; }

        /// <summary>
        /// ActivityExceptionDecoration
        /// Selection
        /// Type of the exception activity on record.
        /// <summary>
        [JsonProperty("activity_exception_decoration")]
        [Description("ActivityExceptionDecoration")]
        public ActivityExceptionDecorationHrLeaveOdooEnum? ActivityExceptionDecoration { get; set; }

        /// <summary>
        /// ActivityExceptionIcon
        /// Char
        /// Icon to indicate an exception activity.
        /// <summary>
        [JsonProperty("activity_exception_icon")]
        [Description("ActivityExceptionIcon")]
        public string ActivityExceptionIcon { get; set; }

        /// <summary>
        /// MessageIsFollower
        /// Boolean
        /// <summary>
        [JsonProperty("message_is_follower")]
        [Description("MessageIsFollower")]
        public bool? MessageIsFollower { get; set; }

        /// <summary>
        /// MessageFollowerIds
        /// One2many
        /// mail.followers
        /// res_id
        /// <summary>
        [JsonProperty("message_follower_ids")]
        [Description("MessageFollowerIds")]
        public long[] MessageFollowerIds { get; set; }

        /// <summary>
        /// MessagePartnerIds
        /// Many2many
        /// res.partner
        /// <summary>
        [JsonProperty("message_partner_ids")]
        [Description("MessagePartnerIds")]
        public long[] MessagePartnerIds { get; set; }

        /// <summary>
        /// MessageChannelIds
        /// Many2many
        /// mail.channel
        /// <summary>
        [JsonProperty("message_channel_ids")]
        [Description("MessageChannelIds")]
        public long[] MessageChannelIds { get; set; }

        /// <summary>
        /// MessageIds
        /// One2many
        /// mail.message
        /// res_id
        /// <summary>
        [JsonProperty("message_ids")]
        [Description("MessageIds")]
        public long[] MessageIds { get; set; }

        /// <summary>
        /// MessageUnread
        /// Boolean
        /// If checked, new messages require your attention.
        /// <summary>
        [JsonProperty("message_unread")]
        [Description("MessageUnread")]
        public bool? MessageUnread { get; set; }

        /// <summary>
        /// MessageUnreadCounter
        /// Integer
        /// Number of unread messages
        /// <summary>
        [JsonProperty("message_unread_counter")]
        [Description("MessageUnreadCounter")]
        public int? MessageUnreadCounter { get; set; }

        /// <summary>
        /// MessageNeedaction
        /// Boolean
        /// If checked, new messages require your attention.
        /// <summary>
        [JsonProperty("message_needaction")]
        [Description("MessageNeedaction")]
        public bool? MessageNeedaction { get; set; }

        /// <summary>
        /// MessageNeedactionCounter
        /// Integer
        /// Number of messages which requires an action
        /// <summary>
        [JsonProperty("message_needaction_counter")]
        [Description("MessageNeedactionCounter")]
        public int? MessageNeedactionCounter { get; set; }

        /// <summary>
        /// MessageHasError
        /// Boolean
        /// If checked, some messages have a delivery error.
        /// <summary>
        [JsonProperty("message_has_error")]
        [Description("MessageHasError")]
        public bool? MessageHasError { get; set; }

        /// <summary>
        /// MessageHasErrorCounter
        /// Integer
        /// Number of messages with delivery error
        /// <summary>
        [JsonProperty("message_has_error_counter")]
        [Description("MessageHasErrorCounter")]
        public int? MessageHasErrorCounter { get; set; }

        /// <summary>
        /// MessageAttachmentCount
        /// Integer
        /// <summary>
        [JsonProperty("message_attachment_count")]
        [Description("MessageAttachmentCount")]
        public int? MessageAttachmentCount { get; set; }

        /// <summary>
        /// MessageMainAttachmentId
        /// Many2one
        /// ir.attachment
        /// <summary>
        [JsonProperty("message_main_attachment_id")]
        [Description("MessageMainAttachmentId")]
        public long? MessageMainAttachmentId { get; set; }

        /// <summary>
        /// WebsiteMessageIds
        /// One2many
        /// Website communication history
        /// mail.message
        /// res_id
        /// <summary>
        [JsonProperty("website_message_ids")]
        [Description("WebsiteMessageIds")]
        public long[] WebsiteMessageIds { get; set; }

        /// <summary>
        /// MessageHasSmsError
        /// Boolean
        /// If checked, some messages have a delivery error.
        /// <summary>
        [JsonProperty("message_has_sms_error")]
        [Description("MessageHasSmsError")]
        public bool? MessageHasSmsError { get; set; }

        /// <summary>
        /// Id
        /// Integer
        /// <summary>
        [JsonProperty("id")]
        [Description("Id")]
        public long Id { get; set; }

        /// <summary>
        /// DisplayName
        /// Char
        /// <summary>
        [JsonProperty("display_name")]
        [Description("DisplayName")]
        public string DisplayName { get; set; }

        /// <summary>
        /// CreateUid
        /// Many2one
        /// res.users
        /// <summary>
        [JsonProperty("create_uid")]
        [Description("CreateUid")]
        public long? CreateUid { get; set; }

        /// <summary>
        /// CreateDate
        /// Datetime
        /// <summary>
        [JsonProperty("create_date")]
        [Description("CreateDate")]
        public DateTime? CreateDate { get; set; }

        /// <summary>
        /// WriteUid
        /// Many2one
        /// res.users
        /// <summary>
        [JsonProperty("write_uid")]
        [Description("WriteUid")]
        public long? WriteUid { get; set; }

        /// <summary>
        /// WriteDate
        /// Datetime
        /// <summary>
        [JsonProperty("write_date")]
        [Description("WriteDate")]
        public DateTime? WriteDate { get; set; }

        /// <summary>
        /// LastUpdate
        /// Datetime
        /// <summary>
        [JsonProperty("__last_update")]
        [Description("LastUpdate")]
        public DateTime? LastUpdate { get; set; }
    }


    // The status is set to 'To Submit', when a time off request is created.
    // The status is 'To Approve', when time off request is confirmed by user.
    // The status is 'Refused', when time off request is refused by manager.
    // The status is 'Approved', when time off request is approved by manager.
    [JsonConverter(typeof(StringEnumConverter))]
    public enum StatusHrLeaveOdooEnum
    {
        [EnumMember(Value = "draft")]
        ToSubmit = 1,

        [EnumMember(Value = "cancel")]
        Cancelled = 2,

        [EnumMember(Value = "confirm")]
        ToApprove = 3,

        [EnumMember(Value = "refuse")]
        Refused = 4,

        [EnumMember(Value = "validate1")]
        SecondApproval = 5,

        [EnumMember(Value = "validate")]
        Approved = 6,
    }


    [JsonConverter(typeof(StringEnumConverter))]
    public enum ValidationTypeHrLeaveOdooEnum
    {
        [EnumMember(Value = "no_validation")]
        NoValidation = 1,

        [EnumMember(Value = "hr")]
        ByTimeOffOfficer = 2,

        [EnumMember(Value = "manager")]
        ByEmployeeSManager = 3,

        [EnumMember(Value = "both")]
        ByEmployeeSManagerAndTimeOffOfficer = 4,
    }





    // By Employee: Allocation/Request for individual Employee, By Employee Tag: Allocation/Request for group of employees in category
    [JsonConverter(typeof(StringEnumConverter))]
    public enum AllocationModeHrLeaveOdooEnum
    {
        [EnumMember(Value = "employee")]
        ByEmployee = 1,

        [EnumMember(Value = "company")]
        ByCompany = 2,

        [EnumMember(Value = "department")]
        ByDepartment = 3,

        [EnumMember(Value = "category")]
        ByEmployeeTag = 4,
    }


    [JsonConverter(typeof(StringEnumConverter))]
    public enum TakeTimeOffInHrLeaveOdooEnum
    {
        [EnumMember(Value = "day")]
        Day = 1,

        [EnumMember(Value = "half_day")]
        HalfDay = 2,

        [EnumMember(Value = "hour")]
        Hours = 3,
    }


    [JsonConverter(typeof(StringEnumConverter))]
    public enum HourFromHrLeaveOdooEnum
    {
        [EnumMember(Value = "0")]
         AM1200 = 1,

        [EnumMember(Value = "0.5")]
        AM1230 = 2,

        [EnumMember(Value = "1")]
        AM0100 = 3,

        [EnumMember(Value = "1.5")]
        AM0130 = 4,

        [EnumMember(Value = "2")]
        AM0200 = 5,

        [EnumMember(Value = "2.5")]
        AM0230 = 6,

        [EnumMember(Value = "3")]
        AM0300 = 7,

        [EnumMember(Value = "3.5")]
        AM0330 = 8,

        [EnumMember(Value = "4")]
        AM0400= 9,

        [EnumMember(Value = "4.5")]
        AM0430 = 10,

        [EnumMember(Value = "5")]
        AM0500 = 11,

        [EnumMember(Value = "5.5")]
        AM0530 = 12,

        [EnumMember(Value = "6")]
        AM0600 = 13,

        [EnumMember(Value = "6.5")]
        AM0630 = 14,

        [EnumMember(Value = "7")]
        AM0700= 15,

        [EnumMember(Value = "7.5")]
        AM0730 = 16,

        [EnumMember(Value = "8")]
        AM0800 = 17,

        [EnumMember(Value = "8.5")]
        AM0830 = 18,

        [EnumMember(Value = "9")]
        AM0900= 19,

        [EnumMember(Value = "9.5")]
        AM0930 = 20,

        [EnumMember(Value = "10")]
        AM1000 = 21,

        [EnumMember(Value = "10.5")]
        AM1030 = 22,

        [EnumMember(Value = "11")]
        AM1100 = 23,

        [EnumMember(Value = "11.5")]
        AM1130 = 24,

        [EnumMember(Value = "12")]
        PM1200 = 25,

        [EnumMember(Value = "12.5")]
        PM1230 = 26,

        [EnumMember(Value = "13")]
        PM0100 = 27,

        [EnumMember(Value = "13.5")]
        PM0130= 28,

        [EnumMember(Value = "14")]
        PM0200 = 29,

        [EnumMember(Value = "14.5")]
        PM0230 = 30,

        [EnumMember(Value = "15")]
        PM0300 = 31,

        [EnumMember(Value = "15.5")]
        PM0330= 32,

        [EnumMember(Value = "16")]
        PM0400 = 33,

        [EnumMember(Value = "16.5")]
        PM0430= 34,

        [EnumMember(Value = "17")]
        PM0500 = 35,

        [EnumMember(Value = "17.5")]
        PM0530 = 36,

        [EnumMember(Value = "18")]
        PM0600 = 37,

        [EnumMember(Value = "18.5")]
        PM0630 = 38,

        [EnumMember(Value = "19")]
        PM700 = 39,

        [EnumMember(Value = "19.5")]
        PM0730 = 40,

        [EnumMember(Value = "20")]
        PM800 = 41,

        [EnumMember(Value = "20.5")]
        PM830 = 42,

        [EnumMember(Value = "21")]
        PM900 = 43,

        [EnumMember(Value = "21.5")]
        PM930 = 44,

        [EnumMember(Value = "22")]
        PM1000 = 45,

        [EnumMember(Value = "22.5")]
        PM1030 = 46,

        [EnumMember(Value = "23")]
        PM1100 = 47,

        [EnumMember(Value = "23.5")]
        PM1130 = 48,
    }


    [JsonConverter(typeof(StringEnumConverter))]
    public enum HourToHrLeaveOdooEnum
    {
        [EnumMember(Value = "0")]
        AM1200 = 1,

        [EnumMember(Value = "0.5")]
        AM1230 = 2,

        [EnumMember(Value = "1")]
        AM0100 = 3,

        [EnumMember(Value = "1.5")]
        AM0130 = 4,

        [EnumMember(Value = "2")]
        AM0200 = 5,

        [EnumMember(Value = "2.5")]
        AM0230 = 6,

        [EnumMember(Value = "3")]
        AM0300 = 7,

        [EnumMember(Value = "3.5")]
        AM0330 = 8,

        [EnumMember(Value = "4")]
        AM0400 = 9,

        [EnumMember(Value = "4.5")]
        AM0430= 10,

        [EnumMember(Value = "5")]
        AM0500 = 11,

        [EnumMember(Value = "5.5")]
        AM0530= 12,

        [EnumMember(Value = "6")]
        AM0600 = 13,

        [EnumMember(Value = "6.5")]
        AM0630 = 14,

        [EnumMember(Value = "7")]
        AM0700 = 15,

        [EnumMember(Value = "7.5")]
        AM0730 = 16,

        [EnumMember(Value = "8")]
        AM0800 = 17,

        [EnumMember(Value = "8.5")]
        AM0830 = 18,

        [EnumMember(Value = "9")]
        AM0900 = 19,

        [EnumMember(Value = "9.5")]
        AM0930 = 20,

        [EnumMember(Value = "10")]
        AM1000 = 21,

        [EnumMember(Value = "10.5")]
        AM1030 = 22,

        [EnumMember(Value = "11")]
        AM1100= 23,

        [EnumMember(Value = "11.5")]
        AM1130 = 24,

        [EnumMember(Value = "12")]
        PM1200 = 25,

        [EnumMember(Value = "12.5")]
        PM1230 = 26,

        [EnumMember(Value = "13")]
        PM0100 = 27,

        [EnumMember(Value = "13.5")]
        PM0130= 28,

        [EnumMember(Value = "14")]
        PM0200 = 29,

        [EnumMember(Value = "14.5")]
        PM0230 = 30,

        [EnumMember(Value = "15")]
        PM0300 = 31,

        [EnumMember(Value = "15.5")]
        PM0330 = 32,

        [EnumMember(Value = "16")]
        PM0400 = 33,

        [EnumMember(Value = "16.5")]
        PM0430 = 34,

        [EnumMember(Value = "17")]
        PM0500= 35,

        [EnumMember(Value = "17.5")]
        PM0530 = 36,

        [EnumMember(Value = "18")]
        PM0600 = 37,

        [EnumMember(Value = "18.5")]
        PM0630 = 38,

        [EnumMember(Value = "19")]
        PM0700= 39,

        [EnumMember(Value = "19.5")]
        PM0730 = 40,

        [EnumMember(Value = "20")]
        PM0800 = 41,

        [EnumMember(Value = "20.5")]
        PM0830 = 42,

        [EnumMember(Value = "21")]
        PM0900 = 43,

        [EnumMember(Value = "21.5")]
        PM0930 = 44,

        [EnumMember(Value = "22")]
        PM1000 = 45,

        [EnumMember(Value = "22.5")]
        PM1030 = 46,

        [EnumMember(Value = "23")]
        PM1100 = 47,

        [EnumMember(Value = "23.5")]
        PM1130 = 48,
    }


    [JsonConverter(typeof(StringEnumConverter))]
    public enum DatePeriodStartHrLeaveOdooEnum
    {
        [EnumMember(Value = "am")]
        Morning = 1,

        [EnumMember(Value = "pm")]
        Afternoon = 2,
    }


    // Status based on activities
    // Overdue: Due date is already passed
    // Today: Activity date is today
    // Planned: Future activities.
    [JsonConverter(typeof(StringEnumConverter))]
    public enum ActivityStateHrLeaveOdooEnum
    {
        [EnumMember(Value = "overdue")]
        Overdue = 1,

        [EnumMember(Value = "today")]
        Today = 2,

        [EnumMember(Value = "planned")]
        Planned = 3,
    }


    // Type of the exception activity on record.
    [JsonConverter(typeof(StringEnumConverter))]
    public enum ActivityExceptionDecorationHrLeaveOdooEnum
    {
        [EnumMember(Value = "warning")]
        Alert = 1,

        [EnumMember(Value = "danger")]
        Error = 2,
    }

}
